"""
验证码相关工具模块
包含验证码生成、存储、邮件内容生成等功能
"""
from datetime import datetime, timedelta
import random

def generate_code(request, code_type):
    """
    生成或获取验证码
    :param request: HttpRequest对象
    :param code_type: 验证码类型 (register/findPassword)
    :return: 6位数字验证码字符串
    """
    code_key = f"{code_type}code"
    expiry_key = f"{code_type}code_expiry"
    current_time = datetime.now().timestamp()

    # 尝试获取已存在的验证码
    if request.session.get(code_key) and request.session.get(expiry_key, 0) > current_time:
        return request.session[code_key]

    # 生成新验证码
    new_code = str(random.randint(100000, 999999))
    request.session[code_key] = new_code
    request.session[expiry_key] = (datetime.now() + timedelta(minutes=5)).timestamp()
    return new_code

def get_email_config(code_type):
    """
    获取邮件内容配置
    :param code_type: 验证码类型
    :return: (title, message) 元组
    """
    config_map = {
        "register": {
            "title": "注册验证码",
            "message": "尊敬的用户，正在注册青少年心理健康咨询系统，"
        },
        "findPassword": {
            "title": "找回密码验证码",
            "message": "尊敬的用户，正在操作找回密码，"
        }
    }
    config = config_map.get(code_type, {})
    return config.get("title"), config.get("message")

def build_email_html(message, code):
    """
    构造邮件HTML内容
    :param message: 基础消息文本
    :param code: 验证码
    :return: 完整的HTML字符串
    """
    return f"""
    <html>
        <body style="font-family: Arial, sans-serif; line-height: 1.6;">
            <p style="font-size: 16px; color: #333;">
                {message}您的验证码是：<strong style="color: #FF5733; font-size: 20px;">{code}</strong>。
                请不要将验证码泄露给他人，以免账号被他人盗用。
            </p>
        </body> 
    </html>
    """